package com.highspeed.bdk.service.physical;

import com.highspeed.bdk.bean.entity.physical.PhysicalLink;
import com.highspeed.bdk.service.base.IBdkBaseService;

import java.util.List;

/**
 * Created by chenjiabin on 2018/3/23.
 */
public interface IPhysicalLinkService extends IBdkBaseService<PhysicalLink, Integer> {
    /**
     * 删除与物理拓扑关联的所有链路
     *
     * @param id 机箱 ID
     */
    void deleteLinksByPhysicalTopologyId(Integer id);

    /**
     * 删除与机箱关联的所有链路
     *
     * @param id 机箱 ID
     */
    void deleteLinksByMachineBoxId(Integer id);

    /**
     * 删除与主板关联的所有链路
     *
     * @param id 主板 ID
     */
    void deleteLinksByBoardId(Integer id);

    /**
     * 删除与CPU关联的所有链路
     *
     * @param id CPU ID
     */
    void deleteLinksByCpuId(Integer id);

    /**
     * 查询与物理拓扑关联的所有物理链路
     *
     * @param id 物理拓扑ID
     * @return 物理链路列表
     */
    List<PhysicalLink> findByPhysicalTopologyId(Integer id);


    /**
     * 查询与机箱关联的所有物理链路
     *
     * @param id 机箱ID
     * @return 物理链路列表
     */
    List<PhysicalLink> findByMachineBoxId(Integer id);

    /**
     * 查询与主板关联的所有物理链路
     *
     * @param id 主板ID
     * @return 物理链路列表
     */
    List<PhysicalLink> findByBoardId(Integer id);

    /**
     * 查询与CPU关联的所有物理链路
     *
     * @param id CPU ID
     * @return 物理链路列表
     */
    List<PhysicalLink> findByCpuId(Integer id);

    /**
     * 根据两个Cpu id 查询链路列表
     *
     * @param leftCpuId  左CPU id
     * @param rightCpuId 又CpuI d
     * @return
     */
    List<PhysicalLink> findAllByTwoCpuId(Integer leftCpuId, Integer rightCpuId);

    /**
     * 根据两个Cpu id 查询线路
     *
     * @param leftCpuId  左CPU id
     * @param rightCpuId 又CpuI d
     * @return
     */
    PhysicalLink findByTwoCpuId(Integer leftCpuId, Integer rightCpuId);

}
